1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect;
18
19 import static com.google.common.base.Preconditions.checkNotNull;
20
21 import com.google.common.annotations.GwtCompatible;
22 import com.google.common.base.Supplier;
23
24 import java.util.Comparator;
25 import java.util.Map;
26 import java.util.Set;
27 import java.util.SortedMap;
28 import java.util.SortedSet;
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 @GwtCompatible
49 class StandardRowSortedTable<R, C, V> extends StandardTable<R, C, V>
50 implements RowSortedTable<R, C, V> {
51
52
53
54
55
56
57 StandardRowSortedTable(SortedMap<R, Map<C, V>> backingMap,
58 Supplier<? extends Map<C, V>> factory) {
59 super(backingMap, factory);
60 }
61
62 private SortedMap<R, Map<C, V>> sortedBackingMap() {
63 return (SortedMap<R, Map<C, V>>) backingMap;
64 }
65
66
67
68
69
70
71
72 @Override public SortedSet<R> rowKeySet() {
73 return (SortedSet<R>) rowMap().keySet();
74 }
75
76
77
78
79
80
81
82 @Override public SortedMap<R, Map<C, V>> rowMap() {
83 return (SortedMap<R, Map<C, V>>) super.rowMap();
84 }
85
86 @Override
87 SortedMap<R, Map<C, V>> createRowMap() {
88 return new RowSortedMap();
89 }
90
91 private class RowSortedMap extends RowMap implements SortedMap<R, Map<C, V>> {
92 @Override
93 public SortedSet<R> keySet() {
94 return (SortedSet<R>) super.keySet();
95 }
96
97 @Override
98 SortedSet<R> createKeySet() {
99 return new Maps.SortedKeySet<R, Map<C, V>>(this);
100 }
101
102 @Override
103 public Comparator<? super R> comparator() {
104 return sortedBackingMap().comparator();
105 }
106
107 @Override
108 public R firstKey() {
109 return sortedBackingMap().firstKey();
110 }
111
112 @Override
113 public R lastKey() {
114 return sortedBackingMap().lastKey();
115 }
116
117 @Override
118 public SortedMap<R, Map<C, V>> headMap(R toKey) {
119 checkNotNull(toKey);
120 return new StandardRowSortedTable<R, C, V>(
121 sortedBackingMap().headMap(toKey), factory).rowMap();
122 }
123
124 @Override
125 public SortedMap<R, Map<C, V>> subMap(R fromKey, R toKey) {
126 checkNotNull(fromKey);
127 checkNotNull(toKey);
128 return new StandardRowSortedTable<R, C, V>(
129 sortedBackingMap().subMap(fromKey, toKey), factory).rowMap();
130 }
131
132 @Override
133 public SortedMap<R, Map<C, V>> tailMap(R fromKey) {
134 checkNotNull(fromKey);
135 return new StandardRowSortedTable<R, C, V>(
136 sortedBackingMap().tailMap(fromKey), factory).rowMap();
137 }
138 }
139
140 private static final long serialVersionUID = 0;
141 }